﻿using System.Collections.ObjectModel;
using System.Data;
using Entities;

namespace DataAccess
{
    public interface IGovOfficeRegionDataAccess
    {
        /// <summary>
        /// Extracts the raw data to Entity Government office region
        /// </summary>
        /// <param name="dataReader">The data reader.</param>
        /// <returns></returns>
        GovOfficeRegion ExtractRawData(IDataRecord dataReader);

        /// <summary>
        /// Gets the list of government office region.
        /// </summary>
        /// <param name="includeInactive">if set to <c>true</c> [include in active].</param>
        /// <returns></returns>
        Collection<GovOfficeRegion> GetGovOfficeRegion(bool includeInactive);

        /// <summary>
        /// Gets all Government office region, active and in-active
        /// </summary>
        /// <returns></returns>
        Collection<GovOfficeRegion> GetAll();

        /// <summary>
        /// Gets all ACTIVE government office region 
        /// </summary>
        /// <returns></returns>
        Collection<GovOfficeRegion> GetAllActive();
        /// <summary>
        /// Gets the Government office region details by id.
        /// </summary>
        /// <param name="govOfficeRegionId">The gov office region id.</param>
        /// <returns></returns>
        GovOfficeRegion GetById(string govOfficeRegionId);


        /// <summary>
        /// Filters governments by the specified keyword.
        /// </summary>
        /// <param name="keyword">The keyword.</param>
        /// <param name="includeInactive">if set to <c>true</c> [include in active].</param>
        /// <returns></returns>
        Collection<GovOfficeRegion> Filter(string keyword, bool includeInactive);
    }
}
